"""
什么是生成器：
使用yield语句向调用者返回一个值，并将状态挂起，保存代码的位置和局部作用域，下次执行时从该位置继续执行
生成器是随着时间生成元素，所以要和for，next（）等配合使用
如果要让生成器下次执行，就使用for迭代工具或者next（）函数
"""
def my_generator(n):
    for i in range(n):
        print("状态挂起前")
        yield i
        print("状态挂起后")

f=my_generator(6)
print(next(f))
print(next(f))

def new_generator(n):
    print("状态挂起前")
    yield n+1
    print("状态挂起后")


def gensquares(N):
    for i in range(N):
        yield i**2

for i in gensquares(5):
    print(i,end=" : ")

